package com.kedacom.ctsp.authz.token;


import com.kedacom.ctsp.authz.entity.AuthUser;
import com.kedacom.ctsp.authz.entity.Authentication;

import java.io.Serializable;

/**
 * 用户的token信息
 *
 * @author
 * @since 3.0
 */
public interface TokenInformation extends Serializable, Comparable<TokenInformation> {
    /**
     * @return 用户对象
     * @see AuthUser
     */
    Authentication getPrincipal();

    /**
     * @return token
     */
    String getToken();

    /**
     * @return 最后一次请求时间
     */
    long getLastRequestTime();

    /**
     * @return 首次请求时间
     */
    long getSignInTime();

    /**
     * @return 是否已过期
     */
    boolean isExpired();


    @Override
    default int compareTo(TokenInformation target) {
        return Long.valueOf(getSignInTime()).compareTo(target.getSignInTime());
    }
}
